lexer grammar GraphLexer;

options {
  language = Java;
}

@header {
    package es.etsii.pl.P6_Flexer;
}

fragment NEWLINE 
   : ('\r' | 'n') ;

WS : (' ' | '\r' | '\t' | '\u000C' | '\n') { $channel=HIDDEN; } ;

STRING : 
    ( '"' (~'"')* '"'
    | '\'' (~'\'')* '\''
    )
    ;
    
GRAPH : 'graph' ;
NODE : 'node' ;
EDGE : 'edge' ;

TITLE : 'title' ;
LABEL : 'label' ;
BORDERSTYLE : 'borderstyle' ;
BORDERSTYLE_ATTR : ('solid' | 'dashed' | 'dotted') ;

SOURCE : 'source' ;
TARGET : 'target' ;
ARROWSTYLE : 'arrowstyle' ;
ARROWSTYLE_ATTR : ('solid' | 'line' | 'none') ;

CURLYOPEN : '{' ;
CURLYCLOSE : '}' ;
COLON : ':' ;

COMMENT : '//' (options {greedy=false;}: .)* ('\r' | '\n') { $channel=HIDDEN; };
